home *** CD-ROM | disk | FTP | other *** search
/ Amiga CD-Sensation: Golden Games / Amiga CD-Sensation - Ausgabe 2 - Golden Games (1996)(GTI - Schatztruhe)(DE)[!].iso / Adventurer's / ImpPro / Scripts / Generate.character < prev    next >
Text File  |  1995-06-01  |  6KB  |  274 lines

  1. /* Random character generating script for the Character module
  2.    (C) Zach Forsyth 1995
  3.    $VER: 0.5
  4. */
  5.  
  6. options results
  7. address IMPCHAR.1
  8.  
  9. /* String attributes */
  10.  
  11. NAME =        0
  12. HEIGHT =     1
  13. WEIGHT =    2
  14. HAIR =        3
  15. EYES =        4
  16.  
  17. /* Numeric attributes */
  18.  
  19. STR =         5
  20. INT =         6
  21. WIS =         7
  22. DEX =        8
  23. CON =        9
  24. CHR =        10
  25. PERCENT =    11
  26. CURRHP =    12
  27. MAXHP =        13
  28. XPVAL =        14
  29. BONUS =        15
  30. LEVEL =        16
  31. AC =        17
  32. THAC0 =        18
  33. MOVE =        19
  34. AGE =        20
  35. SAVES1 =    21
  36. SAVES2 =    22
  37. SAVES3 =    23
  38. SAVES4 =    24
  39. SAVES5 =    25
  40.  
  41. /* Cycle attributes */
  42.  
  43. CLASS =        26
  44. RACE =        27
  45. ALIGN =     28
  46. SEX =         29
  47.  
  48. /* Cycle values */
  49.  
  50. CLASS_FIGHTER = 0
  51. CLASS_THIEF =    1
  52. CLASS_MAGE =    2
  53. CLASS_PRIEST =    3
  54. CLASS_DRUID =    4
  55. CLASS_ILLUS =    5
  56. CLASS_PALADIN = 6
  57. CLASS_RANGER =  7
  58. CLASS_ASSASS =  8
  59. CLASS_MONK   =  9
  60. CLASS_BARD   =  10
  61.  
  62. ALIGN_LG = 0
  63. ALIGN_NG = 1
  64. ALIGN_CG = 2
  65. ALIGN_LN = 3
  66. ALIGN_TN = 4
  67. ALIGN_CN = 5
  68. ALIGN_LE = 6
  69. ALIGN_NE = 7
  70. ALIGN_CE = 8
  71.  
  72. SEX_MALE   = 0
  73. SEX_FEMALE = 1
  74. SEX_OTHER  = 2
  75.  
  76. RACE_HUMAN    = 0
  77. RACE_ELF      = 1
  78. RACE_HALFELF  = 2
  79. RACE_DWARF    = 3
  80. RACE_HALFLING = 4
  81. RACE_GNOME    = 5
  82. RACE_HALFORC  = 6
  83.  
  84. HairStr = "Blonde Lt.Brown Brown Black Grey Red Silver"
  85. NumHairStr = 7
  86. EyeStr = "Brown Blue Hazel Green Grey" 
  87. NumEyeStr = 5
  88.  
  89. call random(,,time('s'))   /* Seed the random # generator */
  90. LOCKLIST                   /* Lock the character list against tampering */
  91.  
  92. STATUS stat                /* Get status */
  93.  
  94. ADDCHAR                    /* The new char will already be selected */
  95. charnum = RESULT
  96.  
  97. GETCHAR char               /* Get the STEM for the character */
  98.  
  99. center = x2c(1b) || 'c'
  100. bold   = x2c(1b) || 'b'
  101. normal = x2c(1b) || 'n'
  102. sep = ', '
  103. reqtitle = '"Character Generation"'
  104. reroll = 1
  105. do while reroll = 1
  106.    call rollstats()
  107.    reqbody = '"' || center || bold || 'STR: ' || normal || char.STR || sep || 'INT: ' || char.INT || sep || 'WIS: ' || char.WIS || sep || 'DEX: ' || char.DEX || sep || 'CON: ' || char.CON || sep || 'CHR: ' || char.CHR || '"'
  108.    reqbuttons = '"Reroll|Keep"'
  109.    REQUESTER reqbody reqbuttons
  110.    reroll = RESULT
  111. end
  112.  
  113. reqbody = '"' || center || 'Select a race"'
  114. reqbuttons = '"Elf|Half Elf|Dwarf|Halfling|Gnome|Human"'
  115. REQUESTER reqbody reqbuttons
  116. char.RACE = RESULT
  117.  
  118. reqbody = '"' || center || 'Select a sex"'
  119. reqbuttons = '"Female|Other|Male"'
  120. REQUESTER reqbody reqbuttons
  121. char.SEX = RESULT
  122.  
  123. select
  124.    when char.RACE = RACE_HUMAN then do
  125.       base = 15
  126.       'ROLL 1d4'
  127.       char.AGE = base + RESULT
  128.       if char.SEX = SEX_FEMALE then
  129.          base = 59
  130.       else
  131.          base = 60
  132.       'ROLL 2d10'
  133.       char.HEIGHT = convinches(base + RESULT)
  134.       if char.SEX = SEX_FEMALE then
  135.          base = 100
  136.       else
  137.          base = 140
  138.       'ROLL 6d10'
  139.       char.WEIGHT =base + RESULT || " lbs"
  140.    end
  141.    when char.RACE = RACE_DWARF then do
  142.       char.CON = char.CON + 1
  143.       char.CHR = char.CHR - 1
  144.       base = 40
  145.       'ROLL 5d6'
  146.       char.AGE = base + RESULT
  147.       if char.SEX = SEX_FEMALE then
  148.          base = 41
  149.       else
  150.          base = 43
  151.       'ROLL 1d10'
  152.       char.HEIGHT = convinches(base + RESULT)
  153.       if char.SEX = SEX_FEMALE then
  154.          base = 105
  155.       else
  156.          base = 130
  157.       'ROLL 4d10'
  158.       char.WEIGHT =base + RESULT || " lbs"
  159.    end
  160.    when char.RACE = RACE_ELF then do
  161.       char.DEX = char.DEX + 1
  162.       char.CON = char.CON - 1
  163.       base = 100
  164.       'ROLL 5d6'
  165.       char.AGE = base + RESULT
  166.       if char.SEX = SEX_FEMALE then
  167.          base = 50
  168.       else
  169.          base = 55
  170.       'ROLL 1d10'
  171.       char.HEIGHT = convinches(base + RESULT)
  172.       if char.SEX = SEX_FEMALE then
  173.          base = 70
  174.       else
  175.          base = 90
  176.       'ROLL 3d10'
  177.       char.WEIGHT =base + RESULT || " lbs"
  178.    end
  179.    when char.RACE = RACE_GNOME then do
  180.       char.INT = char.INT + 1
  181.       char.WIS = char.WIS - 1
  182.       base = 60
  183.       'ROLL 3d12'
  184.       char.AGE = base + RESULT
  185.       if char.SEX = SEX_FEMALE then
  186.          base = 36
  187.       else
  188.          base = 38
  189.       'ROLL 1d6'
  190.       char.HEIGHT = convinches(base + RESULT)
  191.       if char.SEX = SEX_FEMALE then
  192.          base = 68
  193.       else
  194.          base = 72
  195.       'ROLL 5d4'
  196.       char.WEIGHT =base + RESULT || " lbs"
  197.    end
  198.    when char.RACE = RACE_HALFELF then do
  199.       base = 15
  200.       'ROLL 1d6'
  201.       char.AGE = base + RESULT
  202.       if char.SEX = SEX_FEMALE then
  203.          base = 58
  204.       else
  205.          base = 60
  206.       'ROLL 2d6'
  207.       char.HEIGHT = convinches(base + RESULT)
  208.       if char.SEX = SEX_FEMALE then
  209.          base = 85
  210.       else
  211.          base = 110
  212.       'ROLL 3d12'
  213.       char.WEIGHT =base + RESULT || " lbs"
  214.    end
  215.    when char.RACE = RACE_HALFLING then do
  216.       char.DEX = char.DEX + 1
  217.       char.STR = char.STR - 1
  218.       base = 20
  219.       'ROLL 3d4'
  220.       char.AGE = base + RESULT
  221.       if char.SEX = SEX_FEMALE then
  222.          base = 30
  223.       else
  224.          base = 32
  225.       'ROLL 2d8'
  226.       char.HEIGHT = convinches(base + RESULT)
  227.       if char.SEX = SEX_FEMALE then
  228.          base = 48
  229.       else
  230.          base = 52
  231.       'ROLL 5d4'
  232.       char.WEIGHT =base + RESULT || " lbs"
  233.    end
  234.    otherwise nop
  235. end
  236.  
  237. char.HAIR = word(HairStr, random(1, NumHairStr))
  238. char.EYES = word(EyeStr, random(1, NumEyeStr))
  239.  
  240. reqbody = '"' || center || 'Select a class"'
  241. reqbuttons = '"Thief|Mage|Priest|Druid|Illusionist|Paladin|Ranger|Assassin|Monk|Bard|Fighter"'
  242. REQUESTER reqbody reqbuttons
  243. char.CLASS = RESULT
  244.  
  245. char.NAME = "* Generated *"
  246. char.LEVEL = 1
  247. char.AC = 10
  248.  
  249. PUTCHAR char
  250. UNLOCKLIST
  251.  
  252. exit
  253.  
  254. rollstats:
  255.    char.STR = rollstat()
  256.    char.INT = rollstat()
  257.    char.DEX = rollstat()
  258.    char.WIS = rollstat()
  259.    char.CON = rollstat()
  260.    char.CHR = rollstat()
  261.    return
  262.  
  263. rollstat:
  264.    roll = 0
  265.    do 3
  266.       roll = roll + random(1, 6)
  267.    end
  268.    return roll
  269.  
  270. convinches:
  271.    inches = arg(1)
  272.    s = (inches % 12) || " ft " || (inches // 12) || " in"
  273.    return s
  274.